<?php
declare (strict_types = 1);

namespace app\admin\service;

class Template extends \think\Service
{
    /**
     * 注册服务
     *
     * @return mixed
     */
    public function register()
    {
    	//
    }

    /**
     * 执行服务
     *
     * @return mixed
     */
    public function boot()
    {
        //
    }

    /**
     * 下载模板文件
     * @param $param
     * @return \think\response\Json|void
     * 2024-12-04 16 36 01
     * author: jiang
     */
    public function download($param){
        $fileName = $param['name'].'.'.$param['ext'];
        // 定义文件路径
        $filePath = public_path().'/template/' . $fileName; // 注意调整路径以匹配你的项目结构

        if (!file_exists($filePath)) {
            return json(['error' => '文件不存在']);
        }

        // 确保只允许下载特定类型的文件，防止泄露敏感信息
        $allowedExtensions = ['xlsx', 'xls', 'csv']; // 允许的文件扩展名列表
        $extension = pathinfo($filePath, PATHINFO_EXTENSION);

        if (!in_array($extension, $allowedExtensions)) {
            return json(['error' => '不允许下载该类型的文件']);
        }

        // 发送文件头信息
        header('Content-Description: File Transfer');
        header('Content-Type: application/octet-stream');
        header('Content-Disposition: attachment; filename="' . basename($filePath) . '"');
        header('Expires: 0');
        header('Cache-Control: must-revalidate');
        header('Pragma: public');
        header('Content-Length: ' . filesize($filePath));
        readfile($filePath);
        exit;
    }
}
